Form Validation এবং Sanitization Techniques গাইড ও নোট

Database Tutorials - পিএইচপি মাইএসকিউএল আই (PHP MySQL) - Form Handling এবং Data Validation
315

PHP-এ ফর্ম থেকে ডেটা গ্রহণ করার পর, সেগুলিকে সঠিকভাবে প্রক্রিয়া করার জন্য Form Validation এবং Sanitization অত্যন্ত গুরুত্বপূর্ণ। Validation এবং Sanitization একে অপরের থেকে আলাদা হলেও, উভয়ই নিরাপত্তা এবং ডেটা সঠিকতার জন্য গুরুত্বপূর্ণ।


1. Form Validation

Form Validation হল ফর্মের ইনপুট ডেটা যাচাই করা, যেন তা সঠিক ফর্ম্যাটে থাকে এবং কোনো অবাঞ্ছিত বা অজানা ডেটা না আসে। এটি সাধারণত server-side-এ করা হয়, যাতে ডেটাবেসে সঠিক এবং নিরাপদ ডেটা জমা দেওয়া হয়।

1.1 Validation Techniques

  • Required Fields: কিছু ফিল্ডে ডেটা থাকা আবশ্যক।
  • Data Type Validation: ইনপুটের ডেটা টাইপ (যেমন: ইমেইল, নাম্বার) সঠিক কিনা তা পরীক্ষা করা।
  • Length Validation: ইনপুটের দৈর্ঘ্য ঠিক আছে কিনা তা যাচাই করা।
  • Pattern Matching: ইনপুট ফিল্ডের মান প্যাটার্ন অনুযায়ী যাচাই করা (যেমন: ইমেইল, ফোন নম্বর)।

1.2 Example of Form Validation in PHP

<?php
// ভেরিফাইড ডেটা স্টোর করতে পরিবর্তনশীল
$name = $email = $age = "";
$nameErr = $emailErr = $ageErr = "";

// ফর্ম জমা দেওয়ার পর
if ($_SERVER["REQUEST_METHOD"] == "POST") {

  // নাম ভ্যালিডেশন
  if (empty($_POST["name"])) {
    $nameErr = "Name is required";
  } else {
    $name = test_input($_POST["name"]);
    // শুধুমাত্র অক্ষর এবং স্পেস অনুমোদিত
    if (!preg_match("/^[a-zA-Z ]*$/", $name)) {
      $nameErr = "Only letters and white space allowed";
    }
  }

  // ইমেইল ভ্যালিডেশন
  if (empty($_POST["email"])) {
    $emailErr = "Email is required";
  } else {
    $email = test_input($_POST["email"]);
    // ইমেইল ফরম্যাট যাচাই
    if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
      $emailErr = "Invalid email format";
    }
  }

  // বয়স ভ্যালিডেশন
  if (empty($_POST["age"])) {
    $ageErr = "Age is required";
  } else {
    $age = test_input($_POST["age"]);
    if (!is_numeric($age)) {
      $ageErr = "Age must be a number";
    }
  }
}

// ইনপুট ফিল্টারিং ফাংশন
function test_input($data) {
  $data = trim($data);  // অতিরিক্ত স্পেস অপসারণ
  $data = stripslashes($data);  // ব্যাকস্ল্যাশ অপসারণ
  $data = htmlspecialchars($data);  // HTML স্পেশাল ক্যারেক্টার অপসারণ
  return $data;
}
?>

<!-- ফর্ম HTML -->
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
  Name: <input type="text" name="name" value="<?php echo $name;?>">
  <span class="error">* <?php echo $nameErr;?></span><br><br>
  
  Email: <input type="text" name="email" value="<?php echo $email;?>">
  <span class="error">* <?php echo $emailErr;?></span><br><br>
  
  Age: <input type="text" name="age" value="<?php echo $age;?>">
  <span class="error">* <?php echo $ageErr;?></span><br><br>
  
  <input type="submit" name="submit" value="Submit">
</form>

এখানে:

  • empty() ফাংশন ব্যবহার করে চেক করা হচ্ছে ফিল্ডে কোনো মান আছে কিনা।
  • preg_match() ব্যবহার করে নামের ক্ষেত্রে শুধুমাত্র অক্ষর এবং স্পেস অনুমোদিত।
  • filter_var() ব্যবহার করে ইমেইল ঠিকভাবে ফর্ম্যাট করা আছে কিনা যাচাই করা।

2. Form Sanitization

Sanitization হল ডেটাকে পরিষ্কার করা, অর্থাৎ ডেটা থেকে অবাঞ্ছিত বা বিপজ্জনক ক্যারেক্টার সরিয়ে ফেলা। এটি ডেটাকে নিরাপদ এবং সঠিক ফরম্যাটে রাখার জন্য ব্যবহৃত হয়। Sanitization সাধারণত server-side-এ করা হয়, যাতে স্ক্রিপ্টিং আক্রমণ যেমন XSS (Cross-site scripting) বা SQL Injection রোধ করা যায়।

2.1 Sanitization Techniques

  • HTMLspecialchars: HTML স্পেশাল ক্যারেক্টার যেমন <, >, & ইত্যাদি নিরাপদভাবে রূপান্তরিত করে।
  • strip_tags: HTML এবং PHP ট্যাগ সরিয়ে ফেলে।
  • FILTER_SANITIZE_STRING: স্ট্রিং ফিল্টার করে অপ্রয়োজনীয় অক্ষর সরিয়ে ফেলে।
  • FILTER_SANITIZE_EMAIL: ইমেইল ঠিকানার অপ্রয়োজনীয় ক্যারেক্টার সরিয়ে ফেলে।

2.2 Example of Form Sanitization in PHP

<?php
// ফর্ম ইনপুট স্যানিটাইজেশন
$name = $email = $age = "";
$nameErr = $emailErr = $ageErr = "";

// ফর্ম জমা দেওয়ার পর
if ($_SERVER["REQUEST_METHOD"] == "POST") {

  // নাম স্যানিটাইজেশন
  if (empty($_POST["name"])) {
    $nameErr = "Name is required";
  } else {
    $name = sanitize_input($_POST["name"]);
    // নামের জন্য অক্ষর এবং স্পেস অনুমোদিত
    if (!preg_match("/^[a-zA-Z ]*$/", $name)) {
      $nameErr = "Only letters and white space allowed";
    }
  }

  // ইমেইল স্যানিটাইজেশন
  if (empty($_POST["email"])) {
    $emailErr = "Email is required";
  } else {
    $email = sanitize_input($_POST["email"]);
    // ইমেইল ফরম্যাট যাচাই
    if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
      $emailErr = "Invalid email format";
    }
  }

  // বয়স স্যানিটাইজেশন
  if (empty($_POST["age"])) {
    $ageErr = "Age is required";
  } else {
    $age = sanitize_input($_POST["age"]);
    if (!is_numeric($age)) {
      $ageErr = "Age must be a number";
    }
  }
}

// স্যানিটাইজেশন ফাংশন
function sanitize_input($data) {
  $data = trim($data);  // অতিরিক্ত স্পেস অপসারণ
  $data = stripslashes($data);  // ব্যাকস্ল্যাশ অপসারণ
  $data = htmlspecialchars($data);  // HTML স্পেশাল ক্যারেক্টার স্যানিটাইজ করা
  return $data;
}
?>

এখানে:

  • htmlspecialchars() ফাংশন ব্যবহার করা হয়েছে HTML ইনপুট স্যানিটাইজ করতে।
  • trim(): অতিরিক্ত স্পেস মুছে ফেলে।
  • stripslashes(): ব্যাকস্ল্যাশ সরিয়ে ফেলে।

3. Difference between Validation and Sanitization

বৈশিষ্ট্যValidationSanitization
উদ্দেশ্যডেটার সঠিকতা যাচাই করাডেটাকে নিরাপদ এবং পরিষ্কার করা
প্রক্রিয়াইনপুট চেক করা (যেমন: ইমেইল ফরম্যাট, নামের দৈর্ঘ্য)ইনপুট থেকে বিপজ্জনক ক্যারেক্টার অপসারণ করা
ফলাফলযদি ডেটা সঠিক না হয়, তবেই তা অগ্রাহ্য করা হয়ডেটা শুদ্ধ, কিন্তু সঠিক নাও হতে পারে

4. Best Practices for Form Validation and Sanitization

  • Always use server-side validation: ক্লায়েন্ট সাইড ভ্যালিডেশন শুধুমাত্র ইউজার ইন্টারফেসের জন্য, সার্ভার সাইড ভ্যালিডেশন অপরিহার্য।
  • Sanitize all user inputs: সকল ইউজারের ইনপুটকে স্যানিটাইজ করতে হবে, যেমন: ফর্ম ফিল্ড, URL, কোয়্যারির প্যারামিটার ইত্যাদি।
  • Use prepared statements: SQL Injection থেকে রক্ষা পেতে Prepared Statements ব্যবহার করা উচিত।
  • Avoid using eval(): এই ফাংশনটি নিরাপত্তার জন্য ঝুঁকি সৃষ্টি করতে পারে, বিশেষত ইউজারের ইনপুট থেকে ডেটা ব্যবহার করলে।

সারাংশ

PHP-এ ফর্ম ডেটা গ্রহণ করার পর সঠিকভাবে Validation এবং Sanitization করা খুবই গুরুত্বপূর্ণ। Validation ডেটার সঠিকতা নিশ্চিত করে, যেমন: নাম, ই

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...